package com.dataextend.mapper.cluster;


import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 *  存储分析模型的查询条件
 */
@Repository
public interface AnalysisModelMapper {

    /**
     * 新增事件模型的查询条件
     */
    void eventAnalysisModel(@Param("modelId") String modelId, @Param("modelName") String modelName, @Param("startDate") String startDate,
                            @Param("endDate") String endDate, @Param("eventCodes") String eventCodes, @Param("target") String target,
                            @Param("filterParameter") String filterParameter);

    /**
     * 查询当前最大模型id
     */
    String searchEventModelId();


    /**
     *  事件模型列表页
     */
    List<JSONObject> listEventModel();


    /**
     *  删除模型ID
     */
    void deleteEventModel(@Param("modelId") String modelId);


    //-----------------------------------------------------

    /**
     * 新增事件模型的查询条件
     */
    void hopperAnalysisModel(@Param("modelId") String modelId, @Param("modelName") String modelName,@Param("eventCodes") String eventCodes,
                             @Param("target") String target, @Param("filterParameter") String filterParameter,
                             @Param("startDate") String startDate, @Param("endDate") String endDate);


    /**
     * 查询当前最大模型id
     */
    String searchHopperModelId();


    /**
     *  转化漏斗模型列表页
     */
    List<JSONObject> listHopperModel();


    /**
     *  删除模型ID
     */
    void deleteHopperModel(@Param("modelId") String modelId);


    //-----------------------------------------------------

    /**
     *  留存分析- 新增
     */
    void remainAnalysisModel(@Param("modelId") String modelId, @Param("modelName") String modelName, @Param("startDate") String startDate,
                             @Param("endDate") String endDate, @Param("eventCode") String eventCode,
                             @Param("filterParameter") String filterParameter);

    /**
     * 查询当前最大模型id
     */
    String searchRemainModelId();


    /**
     *  留存分析模型列表页
     */
    List<JSONObject> listRemainModel();

    /**
     *  删除模型ID
     */
    void deleteRemainModel(@Param("modelId") String modelId);


    //-----------------------------------------------------

    /**
     *  分布分析- 新增
     */
    void distributeAnalysisModel(@Param("modelId") String modelId, @Param("modelName") String modelName, @Param("startDate") String startDate,
                             @Param("endDate") String endDate, @Param("eventCodes") String eventCodes, @Param("dimension") String dimension,
                             @Param("filterParameter") String filterParameter);

    /**
     * 查询当前最大模型id
     */
    String searchDistributeModelId();


    /**
     *  分布分析模型列表页
     */
    List<JSONObject> listDistributeModel();

    /**
     *  删除模型ID
     */
    void deleteDistributeModel(@Param("modelId") String modelId);

}
